package com.sojson.service;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.sojson.entity.po.RoleMenu;

/**
 * 角色和菜单关联表Service
 * 
 * @author liu
 * @date 2021-04-13
 */
public interface RoleMenuService {

    /**
     * 单条插入
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int insert(RoleMenu roleMenu) throws SQLException;

    /**
     * 批量插入
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int insertList(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过对象批量删除(物理删除)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int deleteByDto(RoleMenu roleMenu) throws SQLException;

    /**
     * 统计全部数量
     * 
     * @return
     * @throws SQLException
     */
    int countAll() throws SQLException;

    /**
     * 查询所有
     * 
     * @return
     * @throws SQLException
     */
    List<RoleMenu> findAll() throws SQLException;

    /**
     * 根据对象统计数量
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int countByDto(RoleMenu roleMenu) throws SQLException;

    /**
     * 根据对象查询
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    List<RoleMenu> findByDto(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId删除(物理删除)
     * 
     * @param menuId
     * @return
     * @throws SQLException
     */
    int deleteByMenuId(Integer menuId) throws SQLException;

    /**
     * 通过menuId列表删除(物理删除)
     * 
     * @param menuIds
     * @return
     * @throws SQLException
     */
    int deleteByMenuIdList(ArrayList<Integer> menuIds) throws SQLException;

    /**
     * 通过menuId更新(全部更新)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateByMenuId(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId列表更新(全部更新)(更新内容相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateStaticByMenuIdList(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId列表更新(全部更新)(更新内容不相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateChangeByMenuIdList(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId更新(局部更新)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updatePartialByMenuId(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId列表更新(局部更新)(更新内容相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateStaticPartialByMenuIdList(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId列表更新(局部更新)(更新内容不相同)
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    int updateChangePartialByMenuIdList(RoleMenu roleMenu) throws SQLException;

    /**
     * 通过menuId查询
     * 
     * @param menuId
     * @return
     * @throws SQLException
     */
    RoleMenu findByMenuId(Integer menuId) throws SQLException;

    /**
     * 通过menuId列表查询
     * 
     * @param menuIds
     * @return
     * @throws SQLException
     */
    ArrayList<RoleMenu> findByMenuIdList(ArrayList<Integer> menuIds) throws SQLException;

    /**
     * 通过对象查询menuId列表
     * 
     * @param roleMenu
     * @return
     * @throws SQLException
     */
    ArrayList<Integer> findMenuIdByDto(RoleMenu roleMenu) throws SQLException;

    /**
     * 清空数据(物理清空)
     * 
     * @throws SQLException
     */
    void clear() throws SQLException;

}